// 发布订阅模式

class eventBus {

    constructor() {
        // 先定义事件中心
        this.eventCenter = []
    }

    // 绑定事件
    on(eventName, callback) {
        if (this.eventCenter[eventName]) {
            this.eventCenter[eventName].push(callback)
        } else {
            this.eventCenter[eventName] = [callback]
        }
    }

    // 取消绑定
    off(eventName, callback) {
        if (Array.isArray(this.eventCenter[eventName])) {
            let idx = this.eventCenter[eventName].indexOf(callback);
            if (idx !== -1) {
                this.eventCenter[eventName].splice(idx, 1)
            }
        }
    }

    // 发布事件

    emit(eventName, data) {
        if (this.eventCenter[eventName]) {
            this.eventCenter[eventName].forEach(callback => {
                callback(data)
            })
        }
    }

}